/**
 * 自动回复
 * https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Passive_user_reply_message.html
 */
const {xmlToJsFunc,xmlToJsOfForm} = require('./getUserSendAsync');

async function AutoOne(data){
    return new Promise(async(resolve,reject)=>{
        const {ToUserName,
            FromUserName,
            CreateTime,
            MsgType,
            Content,
            MsgId} = data;
        let sendData = `<xml>
        <ToUserName><![CDATA[${FromUserName[0]}]]></ToUserName>
        <FromUserName><![CDATA[${ToUserName[0]}]]></FromUserName>
        <CreateTime>${Date.now()}</CreateTime>
        <MsgType><![CDATA[${MsgType[0]}]]></MsgType>
        <Content><![CDATA[${Content[0]}]]></Content>
      </xml>`;
      resolve(sendData,MsgType,FromUserName,ToUserName,MsgType);
    })
}

/**
 * 自动回复2,判断可以自定义,回复自定义的内容,其他是发什么返回什么(限支持文字)
 * @param {*} data 自动回复1传过来的xml数据
 * @param {*} text1 你想判断发送过来的文字数据,可以用方法定义,也可以是个固定的字符串
 * @param {*} text2 你想回应发送数据的文字数据,可以用方法定义,也可以是个固定的字符串
 * @returns 
 */
async function AutoTwo(data,text1,text2){
    return new Promise(async (resolve,reject)=>{
        let dataMsg = await AutoOne(data); //获取发送信息
        let xmlToJs1 = await xmlToJsOfForm(dataMsg);//将传递过来的xml装换成js对象
        if(xmlToJs1.Content[0] === `${text1}`){
            xmlToJs1.sendData = `<xml>
            <ToUserName><![CDATA[${xmlToJs1.ToUserName[0]}]]></ToUserName>
            <FromUserName><![CDATA[${xmlToJs1.FromUserName[0]}]]></FromUserName>
            <CreateTime>${Date.now()}</CreateTime>
            <MsgType><![CDATA[${xmlToJs1.MsgType[0]}]]></MsgType>
            <Content><![CDATA[${text2}]]></Content>
          </xml>`;
          resolve(xmlToJs1);
        }else{
            resolve(dataMsg.sendData);
        }
        // resolve(xmlToJs1);
        
    })
}

module.exports = {
    AutoOne,//自动回复1,回复的是你发送的内容
    AutoTwo,//自动回复2,回复的是你发送的内容,只有回复'在吗？',才不一样
}